"use strict";
/*
  ^ 索引访问类型
  ^ 我们可以使用索引访问类型来查找另一种类型的特定属性：
 */
// let dxd:Person1Name=5
let dxd = "sad";
/**
 * ^ 使用任意类型进行索引的另一个示例是使用 number
 * ^ 来获取数组元素的类型。我们可以将它与 typeof 结合起来，以方便地捕获数组字面量的元素类型：
 */
//! 注意当使用const 定义变量时返回的值
const keys = "age";
const myarr = [
    { name: "Alice", age: 15 },
    { address: "北京大学", age: 20 },
];
// 为啥sseas2会报错
// | 类型来源   | 行为     | 赋值混合字段是否报错 |
// | ------ | ------ | ---------- |
// | 显式联合类型 | 宽松，允许  | ❌ 不报错（宽容）  |
// | 推导联合类型 | 更精确，严格 | ✅ 报错       |
// | 使用变量赋值 | 严格校验   | ✅ 报错       |
// ✅ 真相：这是 TypeScript 中 "对象字面量直接赋值" 与 "变量赋值" 类型检查行为不同 导致的
// 解释一：字面量直接赋值时 TS 会“宽容合并字段”
let sseas = { name: "Alice", age: 15, address: "" };
// 😨 解释二：Person12 是通过 typeof myarr[number] 得到的类型，这个类型更“精确”，检查也更严格
let sseas2 = { name: "Alice", age: 15, address: "" };
let dse = "";
